/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import dominio.Usuario;

/**
 *
 * @author igo
 */
public class ControladorPrincipal implements Controlador{

    private JanelaCadastro janela;

    private Usuario usuario;
    
    private Controlador controladorCadastro;
    
    private JanelaCadastro janelaCadastro;

    public ControladorPrincipal(Usuario usuario) {
        this.usuario = usuario;
    }

    /**
     * passa a responsabilidade para o CDU manter Usuario
     */
    public void cadastrarUsuario(){
        controladorCadastro = new ControladorUsuario(this, usuario);
        janelaCadastro = new JanelaCadastroUsuario();
        preparaCdu();
    }

    /**
     * passa a responsabilidade para o CDU manter Funcionario
     */
    public void cadastrarFuncionario(){
        controladorCadastro = new ControladorFuncionario(this);
        janelaCadastro = new JanelaCadastroFuncionario();
        preparaCdu();
    }

    /**
     * passa a responsabilidade para o CDU manter Aluno
     */
    public void cadastrarAluno(){
        controladorCadastro = new ControladorAluno(this);
        janelaCadastro = new JanelaCadastroAluno();
        preparaCdu();
    }

    public void inserir() {
        
    }

    public void alterar() {
    }

    public void excluir() {
    }

    public void listar() {
    }

    public void pesquisar() {
    }

    public void preparaJanelaCadastro() {
        janelaCadastro = null;
        controladorCadastro = null;
        janela.setVisivel(true);
    }

    public void encerrar() {
    }

    public void cadastrarComposicao() {
        //
    }

    public void setJanelaCadastro(JanelaCadastro janelaCadastro) {
        this.janela = janelaCadastro;
    }

    private void preparaCdu(){
        controladorCadastro.setJanelaCadastro(janelaCadastro);
        janelaCadastro.setControlador(controladorCadastro);
        janelaCadastro.preparaTela();
        janelaCadastro.setVisivel(true);
        janela.setVisivel(false);
    }

    public Object getObject() {
        return usuario;
    }

    public void setObject(Object o) {
        usuario = (Usuario) o;
    }

}
